package GUI;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * @ClassName : FlowLayoutDemo
 * @Author : LV88VL
 * @Date: 2021/3/19 9:48
 * @Description : 布局管理器
 *      注意：组件不能单独存在，必须放在容器中，组件位置和尺寸由布局管理器来确定
 *      java.awt包下提供了五种布局管理器：
 *          A:  FlowLayout:
 *              是一种最基本的布局，在这种布局下，容器将从左到右放置
 *              当到容器边界时，会自动的将组件放到下一行的开始位置
 *              Frame frame = new Frame();
 *              frame.setLayout(new FlowLayout)
 *
 *              public void setLayout(LayoutManager mar)
 *
 *              构造方法：
 *              FlowLayout（）:组件默认居中对齐，水平、垂直默认为五个单位
 *              FlowLayout（int align）:指定组件相对于容器的对齐方式，水平、垂直默认为五个单位
 *              FlowLayout（int align,int hgap,int vgap）:指定组件的对齐方式、水平、垂直的间隙
 *

 *          B:  BorderLayout:
 *
 *          C:  GridLayout
 *          D:  GridBagLayout
 *          E:  CardLayout
 */
public class FlowLayoutDemo {
    public static void main(String[] args) {
        //创建一个名为FlowLayout的窗体
        final Frame f =new Frame("FlowLayout");
        //设置窗体中的布局管理容器为FlowLayout，所有的组件左对齐，水平间距为20，垂直间距为30
        FlowLayout fl=new FlowLayout(FlowLayout.LEFT,20,30);
        f.setLayout(fl);
        //设置窗体的大小
        f.setSize(200,300);
        //设置窗体的位置
        f.setLocation(300,200);
        //设置第一个按钮
        Button bu1=new Button("按钮一");
        //把按钮添加到窗口中
        f.add(bu1);
        //点击一次，第一个按钮就向窗体中添加一个按钮
        bu1.addActionListener(new ActionListener() {
            private int num=1;
            @Override
            public void actionPerformed(ActionEvent e) {
                f.add(new Button("第"+ ++num + "个按钮"));

                //刷新窗体
                f.setVisible(true);
            }
        });
        f.setVisible(true);
    }
}
